home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
amok_lha
/
amok15.lha
/
KURVE
/
DOC
< prev
next >
Wrap
Text File
|
1993-08-15
|
16KB
|
358 lines
Das Programm "Kurve" ist Public Domain. Wenn Ihr es weitergebt, dann
vergeßt bitte den Source Code nicht. Dokumentiert bitte eventuelle
Änderungen. Wenn Ihr Verbesserungen habt, dann schickt Sie mir bitte zu
( Wer programmiert eine symbolische Differentation ?).
Danke, Jörg
Bedienungsanleitung
für
Kurvendiskussion V 2.94
Das Programm wird durch Anklicken des entsprechenden ICONS von der
Workbench gestartet. Im CLI gibt man einfach "KURVE"<RETURN> ein. In
dem logischen Gerät LIBS: muß sich die MathTrans.library befinden.
Nachdem das Programm erfolgreich geladen wurde, erscheint das erste
WINDOW mit dem Titel "Eingabe der Funktion". In der Mitte befindet sich
ein STRINGADGET, das als Defaultinhalt die Funktion "sin(x)" anzeigt.
Mittels Maus und Tastatur kann nun die zu untersuchende Funktion
eingegeben werden. Folgende Eingaben werden später erkannt:
SQRT()= Wurzel () SIN()= Sinus() COS()= Cosinus()
TAN() = Tangens() ASN()= Arcussinus() ACS()= Arcuscosinus()
ATN() = Arcutangens() EXP()= e^() LN() = Loge|()|
LG() = Log10|()| ABS()= |()| FAK()= x!
PI = Zahl pi EE = Zahl e X = Variable
sowie ROUND() = kaufmännische Rundung und TRUNC() = ganzzahliger
Anteil.
Folgende Binäroperationen sind möglich:
+ , - , * , / , sowie:
a^b für ganzzahlige b
a&b wie a^b, aber für nicht ganzzahlige b (Wurzelziehen)
Die Eingabe kann auch in Kleinbuchstaben erfolgen. Wenn Leerzeichen in
der Funktion vorkommen, so muß das erste und das letzte Zeichen ein -
"-, also ein Anführungszeichen oben sein.
Die Eingabe wird durch das Anklicken des "OK- GADGET" abgeschlossen.
DAS WINDOW wird dann geschlossen und ein neues WINDOW mit dem
Hauptmenü geöffnet.
Mit dem Druck auf den rechten Mausknopf erscheinen 2 MENÜLEISTEN:
PROJECT und MATHE. Diese Leisten beinhalten insgesamt 20 ITEMS, die
das gesamte Programm steuern.
01. Eingabe der Funktion
Das erste WINDOW, das beim Starten des Programmes gezeigt wurde
erscheint wieder. Es kann eine neue Funktion eingegeben werden.
02. Konstantenausgabe
Die wichtigsten Konstanten des Programmes werden ausgegeben. Nach
Drücken des RETURN-GADGETS (unten in der Mitte) erscheint wieder das
Hauptmenü.
03. ENDE
Das Programm wird beendet.
04. Info
Es wird ein neues Fenster mit der Copyright-Meldung ausgegeben. Nach
dem Anklicken des CLOSEWINDOW-GADGETS (links oben) erscheint
wieder das Hauptmenü.
05. Dateiabfrage an
Ist dieser Punkt gewählt, so wird dies durch ein Checkhäkchen angezeigt.
Bei Anwahl eines weiteren Menüs, das eine Bildschirmausgabe im CLI-
WINDOW bewirkt, wird in diesem Menü vorher gefragt, wohin die Ausgabe
gelenkt werden soll. Diese Abfrage ist nicht sehr komfortabel, und man
darf hier keinen Fehler machen, da keine Korrekturmöglichkeit eingebaut
ist.
Wählen Sie bitte:
PRT: für den angeschlossenen Drucker über Preferences,
PAR: für die Parallelschnittstelle (ohne Preferences),
SER: für die serielle Schmnittstelle,
ENTER, RETURN für Ausgabe auf dem Bildschirm,
oder jeden AMIGADOS - Dateinamen für die Ausgabe auf ein ASCII -
FILE (z.B. "DF1:wertetabelle"). Ist der letzte Buchstabe ein ".", so wird
eine Defaultextension ".kurve" an den Dateinamen angehängt.
06. Dateiabfrage aus
Wählt die normale Ausgabe auf dem Bildschirm an. Dies ist die
Voreinstellung.
07. SAVE Screen
Es erscheint ein STRINGGADGET, in das der Name des ILBM-Files einegegen
werden kann. Vorgegeben ist hier schon der aktuelle Versionsname, so daß
nur noch das DEVICE hinzugefügt werden muß.
08. PRINT screen
Druckt eine Hardcopy des aktuellen Plotterscreens über die Preferences aus.
09. PROLOG aufrufen
Da ich eine symbolische Differentation in Modula2 noch nicht
programmieren konnte, ruft dieser Menüpunkt die DEMO-Version des
Philgerma PROLOG auf. Dabei wird automatisch die Datei
PROLOG:examples/symbdiff.pro consultiert. Nun kann eine symbolisch
Ableitung über Prolog berechnet werden. Dieser Aufruf funktioniert nur,
wenn genügend Speicher vorhanden ist. Ich benutze 3 MB.
NACHTRAG: Die Benutzung der M2-Amiga Modula-2 Version 3.2d vom 01.11.88
führt bei Aufruf von DOS.Execute zum Absturz. Jedenfalls bei meiner
Gerätekonfiguration: A2000B, 2MB RAM-Erweiterung, PC-Karte, 20MB-Harddisk
auf PC-Seite. Wer Informationen zu diesem Fehler hat, der schreibe mir doch
bitte, dsa Meyer+Voigt bis jetzt noch nicht geantwortet haben.
10. Wertetabelle
A. Funktion
Es wird ein WINDOW für die Intervalleingabe geöffnet. Alle nachfolgenden
Untermenüs außer "Funktionsplotter" und "Symmetrie" benutzen dieses
WINDOW. Es besteht aus folgenden GADGETS:
Xmin : Hier wird die linke Grenze des zu untersuchenden Intervalls
eingegeben.
Xmax : Hier wird die rechte Seite des zu untersuchenden Intervalls
eingegeben.
dX : Hier wird die Schrittweite der Untersuchung eingegeben. Hier ist
schon jeweils ein "vernünftiger" Wert eingetragen.
Art : Wird hier "0" eingetragen, so verwendet das Programm zur
Nullstellensuche in den Untermenüs "Nullstellen" bis
"Wendestellen", sowie bei "Monotonie" eine Intervallschachtelung,
ansonsten die NEWTON-Methode. Bei den Untermenüpunkten
"Wertetabelle","Symmetrie" und "Integration" hat dieses GADGET
keine Auswirkungen.
Nach erfolgter Eingabe kann die Ausgabe der Wertetabelle mit dem ENDE-
GADGET oder dem CLOSEWINDOW-GADGET gestartet werden. Nun gibt
das Programm folgende Werte aus: x, f(x), f'(x), f''(x), f'''(x).
Beachten Sie bitte, das die Berechnung der Ableitungen über einen
erweiterten Differenzenquotienten erfolgt. Dies und die Benutzung der
FFP- Zahlen führt zu Fehlern. Die Genauigkeit kann man Überprüfen,
indem man selber die exakte Ableitung einer Funktion bildet und deren
Funktionswerte mit denen des Programmes vergleicht. Meistens beträgt die
Genauigkeit ca. 2-3 Stellen. Man muß jedoch beachten, daß eine Ausgabe
von "-0.999" mit "-1.000" gleichzusetzen ist. Hier hilft ein wenig Probieren
weiter, um an Erfahrung zu gewinnen.
Nach Beendigung der Ausgabe erscheint ein kleines BORDERLESS-WINDOW
unten in der Mitte, worin sich das RETURN-GADGET befindet. Nach
Betätigung erscheint wieder das HauptmenüWINDOW. Die letzte Ausgabe
ist aber nicht gelöscht, solange Sie keine weitere Ausgabe verlangt haben.
Sie können das DEPTH-GADGET des HauptMENÜWINDOWS dazu benutzen,
die Ausgabe noch einmal anzusehen. Dieses Letztgesagte gilt auch für alle
anderen Ausgaben im CLI-WINDOW.
B. Integralfunktion
Es ist ab Version 2.90 auch möglich Integralfunktionen zu berechnen. Hierzu
wird der Wert der festen unteren Grenze gegeben. Danach ist der Ablauf
identisch wie unter A.
11. Extremstellen
Intervalleingabe wie unter 7. Es werden die Hoch- und Tiefpunkte einer
Funktion im gegebenen Intervall berechnet. So bedeutet die Ausgabe:
H( 0.000,1.500 ) einen Hochpunkt an dieser Stelle. T( , ) zeigt einen
Tiefpunkt an. Die Rückkehr in das HauptmenüWINDOW wie unter 7.
12. Wendestellen
Wie 8., nur werden hier die Wendepunkte W( , ) und die Sattelpunkte
S( , ) berechnet.
13. Integration
Eingabe des Intervalls wie unter 7. beschrieben. Hier bedeutet dX jedoch
die relative Genauigkeit des Ergebnisses. Voreinstellung ist "0.001".
Rückkehr ins HauptmenüWINDOW wie unter 7. beschrieben.
14. Symmetrie
Die Funktion wird auf Achsensymmetrie zur Y-Achse und Punktsymmetrie
zum Ursprung untersucht. Hier finden die KONSTANTEN nopoints (Anzahl
der untersuchten Punkte) und d (Step der x-Koordinate) Verwendung.
15. Monotonie
Die Funktion wird im angegebenen Intervall auf Monotonie untersucht.
Hierbei findet nur eine andere Art der Ausgabe desselben Ergebnisses wie
bei Punkt 08. "Extremstellen" statt.
16. Funktionsplotter
Der Funktionsplotter besitzt eine eigene Intervalleingaberoutine. Folgende
Werte werden einegeben:
Xmin = linke Grenze des Koordinatenkreuzes
Xmax = rechte Grenze des Koordinatenkreuzes
dX = Step der ganzzahligen Unterteilungen auf der X-Achse
Ymin = untere Grenze des Koordinatenkreuzes
Ymax = obere Grenze des Koordinatenkreuzes
dY = Step der ganzzahligen UnterTeilungen auf der Y-Achse
Abltg = 0 = f(x), 1 = f'(x), 2 = f''(x), 3 = f'''(x), 4 = Integralf'on
Punkte = Anzahl der berechneten Koordinaten, dazwischen wird eine
Gerade gezeichnet
Wird bei "Genau" eine "0" eingegeben (Voreinstellung), so wird der durch
"Punkte" bestimmte Step-Wert der X-Koordinaten nicht verändert. Hat
man nun eine Funktion, die sich dem Rand des Koordinatenkreuzes sehr
steil nähert, deren Ableitung also sehr groß ist, dann wird der Graph der
Funktion nicht bis an die Ränder des Koordinatenkreuzes herangezeichnet.
Die Wahl von "1" bei "Genau" bewirkt in diesem Falle eine automatische
Verkleinerung des x-Steps, so daß der Graph der Funktion möglichst weit
an den Rand des Koordinatenkreuzes herangezeichnet wird. Nach einer fest
eingestellten Anzahl (=2) von mit kleinerem Step berechneten Punkten
versucht das Programm den Step wieder zu erhöhen, bis schließlich der alte
Wert wieder erreicht ist.
Nach dem Anklicken des ENDE-GADGETS oder des CLOSEWINDOW-
GADGETS wird der Graph der Funktion in einen neuen SCREEN
gezeichnet. Dieser SCREEN bleibt auch bei anderen Untermenüaktionen
erhalten, so daß man ihn jederzeit mit <Left-AMIGA><M> in den
Vodergrund holen kann. Will man ihn in den Hintergrund bringen so
drückt man <Left-AMIA><N> oder wählt das entsprechende DEPTH-
GADGET in der Titelzeile des SCREENS.
Der Titel des SCREENS zeigt die Funktion an, die beim erstmaligen
Aufruf oder beim Neuzeichnen die aktuelle Funktion war.
Nachdem der Graph fertiggezeichnet ist, öffnet das Programm ein neues
WINDOW mit einem PLOTTER-Untermenü. Sie haben nun folgende
Möglichkeiten:
1. Den aktuellen SCREEN löschen und danach eine erneute
Intervalleingabe und Neuzeichnen des SCREENS mit den neuen Werten.
2. Weiter im alten SCREEN zeichnen. Sie werden in einem weiteren
WINDOW gefragt welche Ableitung Sie jetzt in den SCREEN dazuzeichnen
wollen. Danach erfolgt wieder der Rücksprung in das PLOTTER-
Untermenü.
3. Rückkehr in das HauptmenüWINDOW. Hier können Sie z.B. eine andere
Funktion eingeben und danach wieder den Funktionsplotter anwählen.
Wenn Sie nun im PLOTTER-Untermenü "Weiter im alten Screen zeichnen"
anklicken, so stellen Sie den neuen Funktionsgraphen zusätzlich zum
alten Graphen im alten Koordinatenkreuz dar.
Es ist jetzt auch möglich, in einen Ausschnitt der Funktion zu zoomen.
Man wählt dazu den Menüpunkt Funktionsplotter an. Wenn schon ein
Screen existiert, dann wird diese gezeigt. Man geht mit dem
Koordinatenkreuz in die linke obere Ecke des gewünschten Ausschnitts
und drückt den linken Mausknopf. Danach bewegt man das
Koordinatenkreuz in die recht untere Ecke des Ausschnitts und drückt
erneut die Maus. Die Koordinaten des Ausschnittes werden automatisch in
die STRINGGADGETS des Koordinateneingabemenüs kopiert und können
hier nocheinmal verändert werden. Ein Druck auf das OK-GADGET
zeichnet den neuen SCREEN.
17. Koordinatenanzeige
Man den aktuellen Plotterscreen ansehen und erhält ein
Hilfskoordinatenkreuz gezeichnet. Diese Funktion vermeidet das Speilen
mit <Left-Amiga> <n> oder <m>.
18. Binäre Tabelle
Im Fach E-Technik oder bei uns an der Uni in Rechner-Organisation braucht
man häufiger eine Wertetabelle zu einer gegebenen binären Funktion. Ich
habe des wegen den Funktionsparser umgeschrieben und um die Boolschen
Funktionen erweitert. Folgende Funktionen werden unterstützt:
+ = ODER (OR) , % = exklusives ODER (EXOR) , * = UND (AND)
& = NAND , / = NOR , ! = NICHT (NOT)
Eine Beispielfunktion sähe so aus: a%b*c+d
Beim ! (NOT), welches dem unärem Minus im normalen FFP-Parser entspricht
enthält der Parser noch einen Bug. Es ist notwendig, daß der gesamte zu
negierende Term in Klammern gesetzt wird, auch dann, wenn es nur eine
einzige Variable ist: NOT a = !(a) , NOT (a AND b) = !(a*b).
Nach der Eingabe der Funktion in das große STRINGGADGET müßen die
verwendeten Variablen (maximal 5) in die unteren kleineren GADGETS
eingetragen werden
-----------------------------
f(x) = | !(a%b+c)*d |
----------------------------
---- ---- ---- ---- ----
| a| | b| | c| | d| | |
---- ---- ---- ---- ----
Nach Betätigen des OK-GADGETS wird die Tabelle ausgedruckt. RETURN führt
zum Hauptmenü zurück.
19. Lineare Gleichungssystem
In diesem Unterprogramm können beliebige Lineare Gleichungssysteme mit
maximal 10 Zeilen oder Spalten gelöst werden.
Nach Anwählen des Menüs werden 3 WINDOWS geöffnet. Das erste besteht aus
100 STRINGGADGETS in einer 10 * 10 Matrix. Das zweite (unten links) ist das
Ausgabe Window, währen das dritte das Kommando Window ist.
Nachdem in die STRINGGADGETS Werte eingetragen wurden, kann man über das
Kommando Window durch Anklicken des entsprechenden GADGETS folgende
Aktionen bewirken:
LGS lösen und ausgeben, Determinante des LGS ermitteln, Rang der Matrix
ermitteln und das komplette LGS löschen.
Die Betätigung des QUIT-GADGETS oder des WINDOWCLOSE-GADGETS führt in das
Hauptmenü zurück.
Die Berechnungsroutinen stammen aus den MathTreasures von Meyer & Voigt.
Das Programm entspricht weitestgehend dem mitgelieferten Demoprogramm
LGSBoss von Ernst Heinz (01.04.88). Die Erweiterungen im Bezug auf die
Umstellung auf INTUITION stammen zu 100 % von mir. Falls es rechtliche
Probleme geben sollte, so bitte ich um eine Benachrichtigung.
Soweit zur Kurzbeschreibung.
Mir ist zwar klar, daß das Programm nicht das Schnellste seiner Art ist,
jedoch erfordern die Berechnung der Ableitungen und vor allem das
Parsen des eingegebenen Funktionsstrings eine erhebliche Rechenzeit.
Je kürzer die Funktion ist, desto schneller werden die Berechnungen.
Auch das Vermeiden von überflüssigen Klammerausdrücken erhöht die
Rechengeschwindgkeit. Zweiter Nachteil ist die relative Ungenauigkeit der
konkreten Zahlenergebnisse. Diese resultieren aus der Verwendung der
FFP-Routinen von Motorola, die ja nur einen Bereich von -1.0E19 bis
1.0E19 erlauben, dafür aber wiederum schneller sind. Auch sind für Sie
mehr Transzendente Funktionen festimplementiert, so daß diese nicht in
einer langsamen Hochsprache von mir geschrieben werden mußten, da ich
keine 68000-Maschinensprache beherrsche. Ein weiterer Grund ist die
Verwendung einer numerischen Näherung für die Ableitungen anstatt des
exakten Wertes, da ich noch keine Routine zum Differenzieren eines
Strings eingebaut habe.
Alles in allem hoffe ich, daß der Kompromiß gelungen ist. Mir hat das
Programm schon bei einigen Aufgaben und Mathezetteln geholfen und ich
hoffe, daß andere es auch ein wenig nützlich finden werden.
Die Parserroutine habe ich nach der Vorlage des Programmes Parse.c von
John M. Olson, 1547 Jamestown Drive, Salt Lake City, USA von Fish-Disk
92 nach M2-Modula2 umgesetzt und modifiziert. Ohne diese Vorlage wäre
dieses gesamte Programm in dieser Art wahrscheinlich nicht zustande
gekommen, also Leute : schreibt Public-Domain Programme um Eure Erfahrungen
weiterzugeben.
Das Copyright des Programmes bleibt weiterhin bei mir. Es ist jedoch Public
Domain, also kopiert es möglichst oft. Aber bitte laßt meine Copyright
Zeile drin. Insgesamt arbeite ich an diesem Programm mit vielen
Unterbrechungen ca. 3 Jahre. Zuerst auf einem Sinclair ZX Spectrum in
BASIC, dann in AMIGA-Basic und zum Schluß in MODULA-2. Wenn Ihr Anregungen
oder Beschwerden habt, dann meldet Euch bei mir (vorzugsweise in den
Semesterferien). Am liebsten sind mir Erweiterungen und ausgemerzte Bugs.
So das soll es jetzt auch gewesen sein, viel Spaß
---
| | |
|
--- --- | ---
| | | |-- | |
| | | | | |
--- --- | ---|
|
|
---
Jörg Wesemann
Auf der Heide 10
D-2807 Achim - Baden
Telefon : 04202 / 70658